#include<cstdio>
#include<algorithm>
#include<cmath>
#define N 8010
using namespace std;
int a[N];
int n,q,opt;
int x,v;
struct Node{
	int val,id;
}b[N];
int finds(int x,int v){
	int l=1,r=n;
	while(l<r){
		int mid=(l+r)>>1;
		if(b[mid].val<x){
			l=mid+1;
		}
		else if(b[mid].val>x){
			r=mid;
		}
		else{
			if(b[mid].id<v){
				l=mid+1;
			}
			else if(b[mid].id>v){
				r=mid;
			}
			else{
				return mid;
			}
		}
	}
	return l;
}
bool cmp(Node a,Node b){
	return a.val==b.val?a.id<b.id:a.val<b.val;
}
signed main(){
	freopen("sort.in","r",stdin);
	freopen("sort.out","w",stdout);
	scanf("%d%d",&n,&q);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		b[i].val=a[i];
		b[i].id=i;
	}
	sort(b+1,b+n+1,cmp);
	for(int i=1;i<=q;i++){
		scanf("%d",&opt);
		if(opt==1){
			scanf("%d%d",&x,&v);
			a[x]=v;
			for(int i=1;i<=n;i++){
				b[i].val=a[i];
				b[i].id=i;
			}
			sort(b+1,b+n+1,cmp);
//			for(int i=1;i<=n;i++){
//				printf("%d",b[i].id);
//			}
		}
		else{
			scanf("%d",&x);
			printf("%d\n",finds(a[x],x));
		}
	}
	return 0;
}
/*
3 4
3 2 1
2 3
1 3 2
2 2
2 3
*/
